'use strict';
var db = uniCloud.database(); // 全局数据库引用
var _ = db.command; // 数据库操作符
var $ = _.aggregate; // 聚合查询操作符
module.exports = {
	/**
	 * 订单付款后的奖励逻辑
	 * @param {Object} taskInfo  任务信息
	 * @param {Object} orderInfo 订单信息
	 * @param {Object} userInfo 下单人信息
	 * @param {Object} mchInfo 商家配置信息
	 */
	run: async (data) => {
		let res = { code: 0, msg: "ok" };
		// 业务逻辑开始-----------------------------------------------------------
		let {
			taskInfo, //  任务信息
			orderInfo, // 订单信息
			userInfo, // 下单人信息
			mchInfo, // 商家配置信息
		} = data;

		// 开启事务，防止出错
		const transaction = await vk.baseDao.startTransaction();
		try {
			// 标记订单不结算
			await vk.daoCenter.orderDao.updateById({
				db: transaction,
				id: orderInfo._id,
				dataJson: {
					"fx.settlement_status": 2
				}
			});
			// 标记任务无需执行
			await vk.daoCenter.orderTaskDao.updateStatusNoExecute({
				db: transaction,
				taskInfo,
				msg: "【none】模式无需结算"
			});

			// 提交事物
			await transaction.commit();
			console.log(`transaction succeeded`);

			res.msg = "ok";
			res.code = 0;
			res.taskInfo = taskInfo;
			return res;
		} catch (err) {
			// 事务回滚
			return await vk.baseDao.rollbackTransaction({
				db: transaction,
				err
			});
		}
		// 业务逻辑结束-----------------------------------------------------------
		return res;
	}
}
